package com.sinochem.yunlian.ship.base.mapper;

import com.sinochem.yunlian.ship.base.entity.BsPort;
import com.sinochem.yunlian.ship.base.vo.response.MPortVo;
import com.sinochem.yunlian.ship.base.vo.response.PortVo;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 港口信息表
 * 
 * @author panyanan
 * @email panyanan@ship.com
 * @date 2017-11-20 11:38:27
 */
public interface BsPortMapper extends Mapper<BsPort> {

	List<BsPort> findAllPort();

	/**智能海图、船东端、货主端查询**/
	List<BsPort> findAllPortByLevel(@Param("status") int disableStatus, @Param("level") int level);

    List<BsPort> findPortByCondition(Map params);

	String getPortNameByMap(HashMap<Object, Object> hashMap);

	/**
	 * @Auther: wanghui
	 * @Dscription: 运营后台港口管理
	 * @Date: Created in 16:19 2018/3/7
	 **/
	List<BsPort> findAllPortName();

	List<BsPort> findCityById(Long parentId);

	List<BsPort> findPortListByMap(Map<String,Object> params);

	List<BsPort> findCity(Map<String,Object> params);

	List<BsPort> findAllPorts(Map<String,Object> params);


	/**
	 *
	 * @Description: 根据ID获取未删除的
	 */
	BsPort selectPortById(@Param("id") Long id);

	/**
	 *
	 * @Description: 查询货品名称以及等级查询货品
	 */
	BsPort selectPortByPortNameAndLevel(@Param("portName")String portName, @Param("level")int level);

	List<PortVo> selectPortLevelList(@Param("level") Integer level, @Param("parentId") Long parentId);

	/**
	 *
	 * @param parentId
	 * @Description: 获取当前节点最大编码
	 */
	String selectPortMaxEnName(@Param("parentId") Long parentId);

	/**
	 * 初始化数据表编码
	 * @param parentId
	 * @return
	 */
	String selectPortMaxEnNameNotNull(@Param("parentId") Long parentId);

	Integer selectPortMaxSeqNum(@Param("parentId") Long parentId);

	/**
	 *
	 * @Description: 获取父节点的所有子节点
	 */
	List<BsPort> selectPortList(@Param("parentId") Long parentId);

	int updatePortDisableStatus(@Param("id") Long id, @Param("disableStatus") Integer disableStatus, @Param("ids") List<Long> lists);


	/**
	 *
	 * @Description: 根据货品id查询EnName
	 */
	String selectPortMaxEnNameById(@Param("id") Long id);

	int selectPortMaxLevel();

	List<BsPort> selectPortByLeve(@Param("level")Integer level);

	void updatePortEnNameById(@Param("id")Long id,@Param("enName") String enName);
}
